package main

import (
	"fmt"
)

// PingTimeQueue 是一个先进先出的容器
type PingTimeQueue struct {
	items []int64
}

// NewPingTimeQueue 创建一个新的 FIFO 容器
func NewPingTimeQueue() *PingTimeQueue {
	return &PingTimeQueue{
		items: make([]int64, 0),
	}
}

// Enqueue 将元素添加到容器的末尾
func (q *PingTimeQueue) Enqueue(item int64) {
	if len(q.items) == 5 {
		// 如果容器已满，则删除第一个元素
		q.items = q.items[1:]
	}
	q.items = append(q.items, item)
}

// Average 计算队列中最后5次请求的平均值
func (q *PingTimeQueue) Average() float64 {
	sum := int64(0)
	for _, item := range q.items {
		sum += item
	}
	if len(q.items) > 0 {
		return float64(sum) / float64(len(q.items))
	}
	return 0
}

// Print 打印容器中的所有元素
func (q *PingTimeQueue) Print() {
	fmt.Println("FIFO Queue:")
	for _, item := range q.items {
		fmt.Println(item)
	}
}
